The DMA funcs have changed a little. A struct is used to pass info back/forth with the DMA alloc funcs. This was used to make it possible to pass back more info and because QLIB will someday support VDS which will need this struct too. The struct is as follows: struct dma_s { dword siz; dword off; word sel; word id; dword phys; word dmach; }; Functions: dma_alloc64(struct dma_s *) dma_alloc128(struct dma_s *) dma_free(struct dma_s *) Before calling dma_alloc64() or dma_alloc128() you must set 'siz' to the size of the buffer you need (in bytes) and set 'dmach' to what ever channel the buffer will be used for. And if the call is successful then 'phys' will hold the physical address of the buffer. You should ignore all other fields. Although currently QLIB's DMA alloc funcs do not use 'dmach' I suggest you use them if/when QLIB does support VDS.